Skip to content
On this page

1. 前提提要、场景

environment variables,在操作系统及应用都有极大的作用。

环境变量的使用场景很多

  • 比如在 OSS 篇使用宿主机的环境变量,存储云服务的权限
  • CRA 使用环境变量 PUBLIC_URL 配置静态资源的基础路径
  • 前端的异常监控服务中还会用到 Git 的 Commit/Tag 作为 Release 方便定位代码,其中 Commit/Tag 的名称从环境变量中获取。

2. printenv

通过 printenv 可获得系统的所有环境变量

sh
$ printenv
LANG=en_US.UTF-8
USER=root
LOGNAME=root
HOME=/root
PATH=/opt/share/pnpm:/opt/nvm/versions/node/v16.17.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
SHELL=/bin/zsh
TERM=xterm-256color
XDG_SESSION_ID=1852
XDG_RUNTIME_DIR=/run/user/0
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
XDG_SESSION_TYPE=tty
XDG_SESSION_CLASS=user

环境变量命名一般为全部大写

zsh 中,为了方便拿到 $PATH 中的路径,设计了 $path 做为数组,更容易遍历,其中一个修改都会反映到另一个身上。What is the difference between $path and $PATH (lowercase versus uppercase) with zsh

3. $HOME

$HOME,当前用户目录,即 ~ 目录。

sh
# 以下两个命令是等价的
$ cd $HOME
$ cd ~

4. $USER

$USER,即当前用户名。

sh
$ echo $USER
root

# 与下面的等价
$ id -un 

5. $SHELL

sh 是规范,bash 是其实现,但在部分 POSIX 系统中没有 bash,他们也有自己对 sh 的实现使得命令可以正常运行。

可以使用 $SHELL 查看目前使用的 SHELL 工具

sh
$ echo $SHELL
/bin/zsh

6. $PATH

决定了 shell 将到哪些目录中寻找命令或程序,$PATH 的值是一系列目录。